package com.swanclouds.api.systems;

import com.swanclouds.common.RestService;
import com.swanclouds.model.common.ActionResponse;
import com.swanclouds.model.common.redfish.CollectionResource;
import com.swanclouds.model.systems.Volume;
import com.swanclouds.model.systems.VolumeCreate;
import com.swanclouds.model.systems.VolumeInitType;

import java.util.List;

/**
 * 查询逻辑盘集合资源信息
 *
 * @author 张立强 
 */
public interface VolumeService extends RestService {

   /**
    * 查询指定逻辑盘资源信息
    * @param  storageId  逻辑盘Id
    * @return  CollectionResource
    **/
    CollectionResource get(String storageId);

    /**
     * 查询指定逻辑盘资源信息
     * @param storageId 存储控制器ID
     * @param volumeId 逻辑盘ID
     * @return Volume
     */
    Volume getVolume(String storageId, String volumeId);

    /**
     * 查询逻辑盘资源信息列表
     * @param storageId 存储控制器ID
     * @return java.util.List
     */
    List<Volume> list(String storageId);

    /**
     * 创建逻辑盘资源
     * @param volumeCreate 创建逻辑盘
     * @param storageId 存储控制器ID
     * @return ActionResponse
     */
    ActionResponse createVolume(VolumeCreate volumeCreate,String storageId);

    /**
     * 删除指定逻辑盘资源
     * @param storageId 存储控制器ID
     * @param volumeId 逻辑盘ID
     * @return ActionResponse
     */
    ActionResponse delete(String storageId, String volumeId);

    /**
     * 初始化指定逻辑盘资源
     * @param storageId 存储控制器ID
     * @param volumeId 逻辑盘ID
     * @param type [QuickInit,FullInit,CancelInit]
     * @return ActionResponse
     */
    ActionResponse initVolume(String storageId, String volumeId, VolumeInitType type);
}
